import {
  EnterFullScreenMenuItemProps,
  EnterFullScreenProps,
} from "../full-screen";
import { DownloadMenuItemProps, DownloadProps } from "../download";
import { OpenProps } from "../open";
import {
  CurrentPageLabelProps,
  GoToPageMenuItemProps,
  GoToPageProps,
} from "../page-navigation";
import { PrintMenuItemProps, PrintProps } from "../print";
import {
  ShowPropertiesProps,
  ShowPropertiesMenuItemProps,
} from "../properties";
import { RotateDecoratorProps, RotateProps } from "../rotate";
import {
  SwitchScrollModeMenuItemProps,
  SwitchScrollModeProps,
} from "../scroll-mode";
import { SearchProps, ShowSearchPopoverProps } from "../search";
import {
  SwitchSelectionModeMenuItemProps,
  SwitchSelectionModeProps,
} from "../selection-mode";
import type { SwitchThemeProps, SwitchThemeMenuItemProps } from "../theme";
import {
  CurrentScaleProps,
  ZoomInProps,
  ZoomMenuItemProps,
  ZoomOutProps,
  ZoomProps,
} from "../zoom";
import { ReactElement } from "react";

export default interface ToolbarSlot {
  CurrentPageInput(): ReactElement;
  CurrentPageLabel(props: CurrentPageLabelProps): ReactElement;
  CurrentScale(props: CurrentScaleProps): ReactElement;
  GoToFirstPage(props: GoToPageProps): ReactElement;
  GoToFirstPageMenuItem(props: GoToPageMenuItemProps): ReactElement;
  GoToLastPage(props: GoToPageProps): ReactElement;
  GoToLastPageMenuItem(props: GoToPageMenuItemProps): ReactElement;
  GoToNextPage(props: GoToPageProps): ReactElement;
  GoToNextPageMenuItem(props: GoToPageMenuItemProps): ReactElement;
  GoToPreviousPage(props: GoToPageProps): ReactElement;
  GoToPreviousPageMenuItem(props: GoToPageMenuItemProps): ReactElement;
  NumberOfPages(): ReactElement;

  Download(props: DownloadProps): ReactElement;
  DownloadMenuItem(props: DownloadMenuItemProps): ReactElement;

  EnterFullScreen(props: EnterFullScreenProps): ReactElement;
  EnterFullScreenMenuItem(props: EnterFullScreenMenuItemProps): ReactElement;

  Open(props: OpenProps): ReactElement;
  OpenMenuItem(): ReactElement;

  Print(props: PrintProps): ReactElement;
  PrintMenuItem(props: PrintMenuItemProps): ReactElement;

  Rotate(props: RotateProps): ReactElement;
  RotateBackwardMenuItem(props: RotateDecoratorProps): ReactElement;
  RotateForwardMenuItem(props: RotateDecoratorProps): ReactElement;

  Search(props: SearchProps): ReactElement;
  ShowSearchPopover(props: ShowSearchPopoverProps): ReactElement;

  ShowProperties(props: ShowPropertiesProps): ReactElement;
  ShowPropertiesMenuItem(props: ShowPropertiesMenuItemProps): ReactElement;

  SwitchScrollMode(props: SwitchScrollModeProps): ReactElement;
  SwitchScrollModeMenuItem(props: SwitchScrollModeMenuItemProps): ReactElement;
  SwitchSelectionMode(props: SwitchSelectionModeProps): ReactElement;
  SwitchSelectionModeMenuItem(
    props: SwitchSelectionModeMenuItemProps
  ): ReactElement;

  SwitchTheme(props: SwitchThemeProps): ReactElement;
  SwitchThemeMenuItem(props: SwitchThemeMenuItemProps): ReactElement;

  Zoom(props: ZoomProps): ReactElement;
  ZoomIn(props: ZoomInProps): ReactElement;
  ZoomInMenuItem(props: ZoomMenuItemProps): ReactElement;
  ZoomOut(props: ZoomOutProps): ReactElement;
  ZoomOutMenuItem(props: ZoomMenuItemProps): ReactElement;
}
